Least Connections

AI
gemma-4-31b
작성자
익명
작성일
2026.07.11
조회수
9
버전
v1

Least Connections (최소 연결 방식)

1. 개요

Least Connections로드 밸런싱(Load Balancing, 네트워크 트래픽을 여러 서버로 분산하는 기술) 알고리즘 중 하나로, 현재 활성 연결(Active Connection) 수가 가장 적은 서버로 새로운 요청을 전달하는 동적 선택 방식입니다. 단순히 요청 순서에 따라 배분하는 정적 방식과 달리, 서버의 실시간 부하 상태를 연결 수라는 지표로 판단하여 트래픽을 최적화하는 역할을 수행합니다. 주로 전송 계층(L4)의 TCP 연결 수를 기준으로 하지만, 애플리케이션 계층(L7)의 활성 요청 수를 기준으로 적용하기도 합니다.

2. 동작 원리

로드 밸런서는 백엔드 서버 풀(Server Pool)에 속한 각 서버의 현재 연결 상태를 실시간으로 추적합니다. 새로운 클라이언트 요청이 들어오면, 로드 밸런서는 관리하고 있는 연결 테이블을 조회하여 가장 낮은 연결 수치를 가진 서버를 선택해 요청을 포워딩합니다. 이러한 기능은 F5 BIG-IP, Citrix ADC와 같은 L4/L7 스위치나 Nginx, HAProxy 같은 소프트웨어 로드 밸런서에서 구현되어 제공됩니다.

2.1 요청 배분 프로세스 (Sequence Diagram)

sequenceDiagram
    participant Client as 클라이언트
    participant LB as 로드 밸런서
    participant S1 as 서버 A (연결: 5)
    participant S2 as 서버 B (연결: 2)
    participant S3 as 서버 C (연결: 8)

    Client->>LB: 서비스 요청 전송
    Note over LB: 각 서버의 활성 연결 수 확인
    Note over LB: S1:5, S2:2, S3:8
    LB->>LB: 최소 연결 서버 선정 (S2)
    LB->>S2: 요청 전달
    S2-->>LB: 응답 반환
    LB-->>Client: 최종 응답 전달
    Note over LB: S2의 연결 수 증가 (2 -> 3)

2.2 Round Robin vs Least Connections 비교

비교 항목 Round Robin (라운드 로빈) Least Connections (최소 연결)
배분 방식 순차적 순번 할당 (정적) 현재 연결 수 기반 할당 (동적)
서버 상태 고려 고려하지 않음 활성 연결 수 고려
요청 처리 시간 모든 요청의 처리 시간이 동일할 때 유리 요청별 처리 시간이 상이할 때 유리
복잡도 매우 낮음 낮음 ~ 중간 (상태 추적 필요)

3. 주요 특징 및 장단점

3.1 장점

  • 부하 불균형 해소: 세션 유지 시간(Session Duration)이 제각각인 환경에서 매우 효율적입니다. 특정 서버에 시간이 오래 걸리는 무거운 요청(Heavy Request)이 몰려 있어도, 새로운 요청은 상대적으로 한가한 서버로 배분되어 전체 시스템의 응답성을 유지합니다.
  • 동적 적응성: 서버의 현재 상태를 반영하므로, 정적 알고리즘보다 실제 리소스 사용량에 근접한 분산이 가능합니다.

3.2 단점 및 한계점

  • 하드웨어 성능 무시: 모든 서버의 사양이 동일하다고 가정합니다. 예를 들어, 고성능 서버와 저성능 서버가 섞여 있을 때, 단순히 연결 수가 적다는 이유로 저성능 서버에 요청이 몰려 병목 현상이 발생할 수 있습니다.
  • 느린 서버의 역설 (Slow Start Problem): 서버 오류로 인해 요청을 받자마자 즉시 에러 응답을 보내 연결이 빠르게 종료되는 상태일 때, 로드 밸런서는 이를 '한가한 서버'로 오인하여 요청을 계속 폭주시키는 위험이 있습니다.

[보완책] 이러한 한계점을 극복하기 위해 다음과 같은 모니터링 도구와 연동하여 서버의 실제 헬스 체크(Health Check)를 병행합니다. * Prometheus & Grafana: CPU, RAM 사용률을 실시간 모니터링하여 임계치 초과 시 로드 밸런싱 대상에서 제외. * Datadog: 분산 추적을 통해 특정 서버의 응답 지연 시간을 분석하고 가중치 조정에 반영.

4. Weighted Least Connections (가중치 기반 최소 연결)

서버 간 하드웨어 성능 차이를 해결하기 위해 도입된 방식입니다. 각 서버에 가중치(Weight)를 부여하고, 현재 연결 수 / 가중치 값이 가장 낮은 서버를 선택합니다.

  • 계산 방식: $\text{Score} = \frac{\text{Active Connections}}{\text{Weight}}$
  • 가중치가 높을수록(성능이 좋을수록) 더 많은 연결을 수용할 수 있게 됩니다.

4.1 대상 서버 선정 의사코드 (Pseudo-code)

# 서버 리스트: {서버ID: (현재연결수, 가중치)}
servers = {
    "Server_A": (10, 2), # 성능 좋음 (가중치 2)
    "Server_B": (5, 1),  # 성능 보통 (가중치 1)
    "Server_C": (2, 1)   # 성능 보통 (가중치 1)
}

def select_best_server(servers):
    best_server = None
    min_score = float('inf')

    for server, (conn, weight) in servers.items():
        # 점수가 낮을수록 가중치 대비 연결 여유가 많음을 의미
        score = conn / weight
        if score < min_score:
            min_score = score
            best_server = server
            
    return best_server

# 결과: Server_A(10/2=5), Server_B(5/1=5), Server_C(2/1=2) -> Server_C 선택

4.2 가중치 방식 적용 사례

  • 클라우드 인스턴스 혼합 구성: AWS EC2 환경에서 c5.large(고성능)와 t3.medium(저성능) 인스턴스를 함께 운영할 때, 고성능 서버에 더 높은 가중치를 부여하여 처리 능력에 맞는 트래픽을 배분합니다.
  • 점진적 트래픽 전환 (Canary Deployment): 신규 버전 서버를 배포한 후, 초기에는 낮은 가중치를 부여하여 소량의 연결만 유도하고 안정성이 검증됨에 따라 가중치를 높여 트래픽을 점진적으로 확대합니다.

5. 적용 사례 및 최적의 사용 환경

Least Connections는 요청의 처리 시간이 일정하지 않고, 연결 유지 시간이 긴 서비스에 최적화되어 있습니다.

  • 실시간 스트리밍 및 채팅 서비스 (예: YouTube, Twitch, Discord): 사용자가 영상을 시청하거나 채팅 세션을 유지하는 시간이 수 분에서 수 시간까지 매우 다양하므로, 단순히 순서대로 배분하면 특정 서버에 장시간 연결이 누적될 수 있습니다.
  • 데이터베이스 쿼리 서비스 (예: MySQL Cluster, MongoDB): 단순 조회 쿼리와 복잡한 집계(Aggregation) 쿼리의 처리 시간 차이가 극심하므로, 현재 처리 중인 쿼리 수가 적은 서버로 요청을 보내는 것이 효율적입니다.
  • FTP/SSH 서버: 파일 전송 크기에 따라 연결 시간이 크게 달라지는 환경에서 유용합니다.

6. 다른 알고리즘과의 비교

알고리즘 핵심 기준 적합한 환경 복잡도 특징
Round Robin 순서 (Sequence) 서버 사양 동일, 요청 처리 시간 일정 매우 낮음 구현이 가장 간단함
Least Connections 연결 수 (Connections) 요청 처리 시간 가변적, 세션 유지 길음 낮음 동적 부하 분산 가능
Weighted Least Conn. 연결 수 $\div$ 가중치 서버 사양 상이, 요청 처리 시간 가변적 중간 하드웨어 성능 차이 극복
Least Response Time 응답 시간 (Latency) 최저 지연 시간이 최우선인 서비스 높음 응답 속도까지 고려한 정밀 제어
IP Hash 클라이언트 IP 주소 세션 고정(Sticky Session) 필요 환경 낮음 동일 사용자는 항상 동일 서버 접속

[선택 가이드] 1. 서버 사양이 모두 같고 요청이 가볍다면 $\rightarrow$ Round Robin 2. 서버 사양은 같으나 요청마다 처리 시간이 크게 다르다면 $\rightarrow$ Least Connections 3. 서버 사양이 서로 다르고 요청 처리 시간도 가변적이라면 $\rightarrow$ Weighted Least Connections 4. 사용자별로 특정 서버에 계속 접속해야 한다면 $\rightarrow$ IP Hash

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?